package cn.com.dcsgo.feign.fallback;

import cn.com.dcsgo.feign.ProductFeignClient;
import cn.com.dcsgo.product.bean.Product;
import org.springframework.stereotype.Component;

import java.math.BigDecimal;

/**
 * ProductFeignClient 的兜底数据返回
 * 当FeignClient调用失败时，会调用这个类中实现的方法作为返回数据
 * 实现需要返回兜底数据的FeignClient接口
 * 在FeignClient中指定 fallback 属性为当前实现类
 * 然后将当前实现类注入到容器中
 * 由于 fallback 还需要配合 sentinel 使用
 * 所以还需要引入 sentinel 并进行一定的配置
 *
 * @author Dcsgo
 * @since 2025/3/16 9:09
 */
@Component
public class ProductFeignClientFallback implements ProductFeignClient {
    @Override
    public Product getProductById(Long id) {
        return new Product(id, new BigDecimal(0), "未知商品 " + id, 0);
    }
}
